package com.zsqat.eshop.product.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * 商品三级分类
 * 
 * @author zsqat
 * @email 491192853@qq.com
 * @date 2020-11-19 16:40:59
 */
@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable {
	private static final long serialVersionUID = 1L;
	/**
	 * 分类id
	 */
	@TableId
	private Long catId;
	/**
	 * 分类名称
	 */
	private String name;
	/**
	 * 父分类id
	 */
	private Long parentCid;
	/**
	 * 层级
	 */
	private Integer catLevel;
	/**
	 * 是否显示[0-不显示，1显示]，配置逻辑删除
	 */
	@TableLogic(value="1", delval="0")
	private Integer showStatus;
	/**
	 * 排序
	 */
	private Integer sort;
	/**
	 * 图标地址
	 */
	private String icon;
	/**
	 * 计量单位
	 */
	private String productUnit;
	/**
	 * 商品数量
	 */
	private Integer productCount;

	// 意思数据库中不存在此字段
	@TableField(exist = false)
	// @JsonInclude 记录内容为空的时候不要显示（忽略），避免前端级联菜单出现四级分类(四级是一个空数组)
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	private List<CategoryEntity> childCategory;
}

/*
  @TableLogic注解参数
　　　　value = ""  未删除的值，默认值为0
　　　　delval = "" 删除后的值，默认值为1
　　　　@TableLogic(value="原值", delval="改值")

  备注：
    我们配置和默认配置正好相反，特别注意了。
      logic-delete-value: 1      # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0  # 逻辑未删除值(默认为 0)

    为什么要这么做呢？
      因为我们数据库中 show_status 已经是 1 了。
      两种思路：
      方法1. 按上面的配置
         logic-delete-value: 1      # 逻辑已删除值(默认为 1)
         logic-not-delete-value: 0  # 逻辑未删除值(默认为 0)

         上面配置使用的是默认值，这个地方就需要修改了
	       是否显示[0-不显示，1显示]，配置逻辑删除
         @TableLogic(value="1", delval="0")
         private Integer showStatus;

      方法2. 就是把以前数据库中 show_status 更新成 0 。其他配置都按默认值。
*/
